package com.kevinkk.greedy;

import java.util.Arrays;

/**
 * 假设你是一位很棒的家长，想要给你的孩子们一些小饼干。但是，每个孩子最多只能给一块饼干。
 * 对每个孩子 i，都有一个胃口值 g[i]，这是能让孩子们满足胃口的饼干的最小尺寸；并且每块饼干 j，都有一个尺寸 s[j] 。
 * 如果 s[j] >= g[i]，我们可以将这个饼干 j 分配给孩子 i ，这个孩子会得到满足。你的目标是满足尽可能多的孩子，并输出这个最大数值。
 *
 * 排序之后，小饼干分给小胃口的孩子，大饼干分配大胃口的孩子
 * 不浪费饼干
 */

public class AssignCookies {
    class Solution {
        public int findContentChildren(int[] g, int[] s) {
            Arrays.sort(g);
            Arrays.sort(s);
            int count = 0;
            for (int i = 0; i < s.length; i++) {
                // 这里不要使用 for 循环来遍历 g
                // 否则对于每个饼干，都要从头重新遍历一次孩子，然而前面的孩子早已被分配了
                if (count < g.length && s[i] >= g[count]) {
                    count++;
                }
            }
            return count;
        }
    }
}
